package com.iqik.base.task.quartz;

import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

public class QuartzDemo {

    /**
     * 创建任务调度器
     */
    public static Scheduler createScheduler() throws SchedulerException {
        StdSchedulerFactory stdSchedulerFactory = new StdSchedulerFactory();
        return stdSchedulerFactory.getScheduler();
    }

    /**
     * 创建任务
     */
    public static JobDetail createJob() {
        JobBuilder jobBuilder = JobBuilder.newJob(DemoJob.class); // TODO 自定义任务类
        jobBuilder.withIdentity("jobName", "jobDemo");
        return jobBuilder.build();
    }

    /**
     * 创建任务触发器
     */
    public static Trigger createTrigger() {
        // 创建时间触发器
        CronTrigger cronTrigger = TriggerBuilder.newTrigger()
               .withIdentity("triggerName", "triggerName")
               .startNow()
               .withSchedule(CronScheduleBuilder.cronSchedule("*/2 * * * * ?"))
               .build();
       return cronTrigger;
    }


    public static void main(String[] args) throws SchedulerException {
        /**
         * 间隔2s执行一次 sout
         */
        // 1.创建任务调度器
        Scheduler scheduler = createScheduler();
        // 2.创建任务
        JobDetail job = createJob();
        // 3创建任务时间触发器
        Trigger trigger = createTrigger();
        // 4.使用任务调度器根据时间触发器执行任务
        scheduler.scheduleJob(job, trigger);
        scheduler.start();
    }

}
